package thread;

public class TicketThread extends Thread{

    private int ticket = 10;

    public void run(){
        for(int i =0;i<10;i++){
            //首先主要这个this关键字代表当前对象,而下面因为我只new了TicketThread t1 = new TicketThread();一个对象
            //所以这个锁是没有问题，但如果new多个的话用this锁同样会失效，为了安全我们可以用TicketThread.class
            synchronized (this){
                if(this.ticket>0){
                    try {
                        Thread.sleep(100);
                        System.out.println(Thread.currentThread().getName()+"卖票---->"+(this.ticket--));
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    } } }
            }}

    public static void main(String[] arg){
        TicketThread t1 = new TicketThread();
        new Thread(t1,"线程1").start();
        new Thread(t1,"线程2").start();
        //经常看到晚上说thread不能共享资源，这个用例子说明thread同样可以共享资源。
        //为什么它也能共享呢？因为Thread本来就是实现了Runnable，包含Runnable的功能是很正常。
    }
}
